home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
bbsutil
/
bbsamt40.zip
/
BANSI.DOC
next >
Wrap
Text File
|
1994-04-07
|
20KB
|
543 lines
Paul Wheaton of Banana Programming has done a thorough study of the
conflicts between the ANSI standard and ANSI music codes. Bloomunit
wishes to strongly endorse the changes he suggests in the below
BANSI.DOC, and to encourage all software authors and developers to
make the suggested modifications to their ANSI music-supporting communi-
cations programs by January 1, 1997.
The most notable of these suggestions is replacing the M sequence for
starting ANSI music with the N sequence, which has no conflicts at all
with the existing standard, and furthermore is easy to remember since it
relates to the character (Ctrl N) which closes a music string.
With cooperation and united effort, those of us who use and support BBS
ANSI music can bring about a permanent change for the better, and make
it more accessible for all to enjoy.
Linda Bloom
Bloomunit BBS
April 6, 1994
--------------------------------------------------------
BANSI.DOC
copyright (c) 1994 by Paul Wheaton, Banana Programming
The ANSI-BBS industry is riddled with conflicts. Since the true ANSI
standard has not been strictly followed, a variety of variations have
evolved. Some have become popular.
This document spells out what BananaCom uses for it's terminal emulation: A
mish-mash of ANSI, VT100, pseudo-ANSI and pseudo-VT100 that tries to follow
what most modem services expect and use. Perhaps this will help to make
BBS's and COM programs work together with a little less research and
programming effort.
Terminal sends:
All ASCII characters from 1 to 127 are sent as is. If somebody wants to
feed a special character that comes through as a character 128 through
255, send that through too.
ANSI terminal emulation is supposed to be a superset of the escape
sequences used by the DEC VT100 terminal. These required that an escape
(ASCII 27) be sent followed by some other characters. The following
keystrokes are well established:
Keystroke Sent
left arrow key ESC [ D
right arrow key ESC [ C
up arrow key ESC [ A
down arrow key ESC [ B
home key ESC [ H
end key ESC [ K
^home key ESC [ L
^page up ESC [ M
F1 key ESC O P
F2 key ESC O Q
F3 key ESC O w
F4 key ESC O x
^capital "oh", not a zero
All other keys send a zero and then the BIOS scan code. Note that most
com programs will use Alt-A through Alt-Z and Alt-1 through Alt-9 and
Alt-0. If there happens to be keys left they will be passed through.
Function keys are your best bet and are all passed through
Alone Shift Ctrl Alt
F1 0 84 0 94 0 104
F2 0 85 0 95 0 105
F3 0 86 0 96 0 106
F4 0 87 0 97 0 107
F5 0 59 0 88 0 98 0 108
F6 0 60 0 89 0 99 0 109
F7 0 61 0 90 0 100 0 110
F8 0 62 0 91 0 101 0 111
F9 0 63 0 92 0 102 0 112
F10 0 64 0 93 0 103 0 113
Some com programs use the Page Up and Page Down keys to initiate a file
transfer although this seems to be changing - these keys are of great
use to BBS's.
Page Up 0 73
Page Down 0 81
Insert 0 82
Note that when you press control-page-down with some terminal programs,
they send ESC [ H ESC [ 2 J and a lot of BBS's simply ignore that.
ctrl-page-down 0 118
ctrl-end 0 117
ctrl-left-arrow 0 115
ctrl-right-arrow 0 116
shift-tab 0 15
Terminal receives:
Most ANSI terminals use a screen 80x24 - with the last line reserved for
reporting the current status of the terminal program. BananaCom uses
this standard.
There are a few ASCII characters that have a special effect on on the
terminal:
Dec Hex char function
7 7 ^G beep
8 8 ^H destructive backspace
9 9 ^I tab - move to next tab column (8,16,24,32,40...)
10 A ^J line feed - move down one. Scroll up if needed
12 C ^L clear screen (normal attribute) & home cursor (1,1)
13 D ^M return - move cursor to column 1
Escape sequences do not have spaces in them. Spaces have been added
here for readability.
Anything appearing in angle brackets is a numeric variable. The angle
brackets are not sent.
ESC D scroll up
All of the text on the screen (or the scrolling region, if one is
defined) is scrolled up one line. The bottom line is filled with
spaces colored according to the current attribute.
Note that there is no left bracket "[" between the ESC and the 'D'.
Example: ESC D scroll all text up one line
ESC M scroll down
All of the text on the screen (or the scrolling region, if one is
defined) is scrolled down one line. The top line is filled with spaces
colored according to the current attribute.
Note that there is no left bracket "[" between the ESC and the 'M'.
Example: ESC M scroll all text down one line
ESC [ @ insert char
Insert a space into the current line at the current cursor position.
The character at column 80 is thrown out. The current attribute is
used for the new space.
ESC [ <NumLines> A cursor up
Move the cursor up specified number of lines (default is one).
If "ESC [ ? 6 h" has been received since last "ESC [ <var> ; <var> r"
then the cursor will not be allowed to move beyond the top of the
scrolling region.
Example: ESC [ 1 0 A move up ten lines
Example: ESC [ A move up one line
ESC [ <NumLines> B cursor down
Move the cursor down specified number of lines (default is one).
If "ESC [ ? 6 h" has been received since last "ESC [ <var> ; <var> r"
then the cursor will not be allowed to move beyond the bottom of the
scrolling region.
Example: ESC [ 1 0 B move down ten lines
Example: ESC [ B move down one line
ESC [ <NumCols> C cursor right
Move the cursor right specified number of lines (default is one).
Example: ESC [ 1 0 C move right ten columns
Example: ESC [ C move right one column
ESC [ <NumCols> D cursor left
Move the cursor left specified number of lines (default is one). Cannot
move beyond left of screen.
Example: ESC [ 1 0 D move left ten columns
Example: ESC [ D move left one column
ESC [ <Num> E line feed
Convert to specified number of line feeds. If the cursor is at the
bottom of the screen (or scrolling region if one is defined) text will
be scrolled up and the bottom line will be cleared.
Example: ESC [ 1 0 E convert and process as ten linefeeds
Example: ESC [ E convert and process as onr linefeed
(why not just send ^J ?)
ESC [ F undefined
ESC [ G undefined
ESC [ <row> ; <col> H move to
Move cursor to this position.
If "ESC [ ? 6 h" has been received since the last
"ESC [ <var> ; <var> r" then the cursor will be positioned relative to
the scrolling region.
This will perform exactly the same as "ESC [ <row> ; <col> f".
Example: ESC [ 1 0 ; 5 H The cursor will be positioned at row 10
and column 5.
Example: ESC [ 10 H The cursor will be positioned at row 10
and column 1.
Example: ESC [ H The cursor will be posi